
#ifndef _PEG_FPM_
#define _PEG_FPM_

//#define FPONE  256
//#define FPHALF 128
//#define FPSHIFT  8
//#define FP_REM_MASK 0xff

#define FPONE        1024
#define FPHALF        512
#define FPSHIFT        10
#define FP_REM_MASK 0x3ff



typedef long int PegFixed;

#define MAKEFP(_a)      (((PegFixed)_a) << FPSHIFT)
#define FPMUL(_a,_b)    ((((PegFixed)_a) * (_b)) >> FPSHIFT)
#define FPDIV(_a,_b)    ((((PegFixed)_a) << FPSHIFT) / ((PegFixed)_b))
#define FPADDONE(_a)    (((PegFixed)_a) + FPONE)
#define FPINT(_a)       ((PEGINT)(((PegFixed)_a) >> FPSHIFT))
#define FPROUNDUP(_a)   ((((PegFixed)_a) + FPONE - 1) >> FPSHIFT)
#define FPROUND(_a)     ((((PegFixed)_a) + FPHALF) >> FPSHIFT)

typedef struct {
    PegFixed x;
    PegFixed y;
} PegFixedPoint;

#endif

